package cn.fl.spl.transform;

import java.util.ArrayList;
import java.util.List;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.spl.vo.SplPriSeaRuleCfgVO;
import fl.spl.facade.spl.dto.SplPriSeaRuleCfgDTO;


/**
 * @Description: 经销商相关基础数据私海规则配置 转换器
 * @Description: VO是客户端传递数据到服务端进行转换的数据
 * @Description: VO转换数据变成DTO传递到服务端
 * @Description: VO不能在服务端出现
 */
public class SplPriSeaRuleCfgVOTransform {


    /**
     * DTO 转  VO
     *
     * @param dto SplPriSeaRuleCfgDTO
     * @return SplPriSeaRuleCfgVO
     */
    public static SplPriSeaRuleCfgVO toVO(SplPriSeaRuleCfgDTO dto) {
        SplPriSeaRuleCfgVO vo = null;
        if (dto != null) {
            vo = new SplPriSeaRuleCfgVO();
            vo.setId(dto.getId());
            vo.setTabNm(dto.getTabNm());//业务数据表名
            vo.setBuOrgCd(dto.getBuOrgCd());//事业部CODE
            vo.setOrgCd(dto.getOrgCd());//组织架构CODE
            vo.setPrivateSeaNm(dto.getPrivateSeaNm());//私海名称
            vo.setReceiveLimitUp(dto.getReceiveLimitUp());//私海领取上限（即，客户经理最多私海客户数，-1，0：无限制，>0：个数）
            vo.setIsLimitUp(dto.getIsLimitUp());//是否限制领取上限(0：否，1：是)
            vo.setIsAutoRelease(dto.getIsAutoRelease());//是否自动释放（0：否，1：是）
            vo.setIsActiveRelease(dto.getIsActiveRelease());//是否主动释放（0：否，1：是）
            vo.setReleasedReceiveDay(dto.getReleasedReceiveDay());//客户经理主动释放公海后对该经销商领取限制（-1：无限制，0：当日；N：几天后可领取）
            vo.setCapDelayDate(dto.getCapDelayDate());//放款延长私海时长（-1：无效，0：当天，不延时，>0：正常延时天数）
            vo.setCrtPrjDelayDate(dto.getCrtPrjDelayDate());//立项延长私海时长（-1：无效，0：当天，不延时，>0：正常延时天数）
            vo.setUnvisitReleaseDay(dto.getUnvisitReleaseDay());//未拜访自动释放限制(自认领私海起，多少天内没有拜访记录，自动释放到公海，-1：无限制，0：无效，>0：正常天数）
            vo.setUncapReleaseDay(dto.getUncapReleaseDay());//未放款自动释放限制(自认领私海起，多少天内没有放款，自动释放到公海，-1：无限制，0：无效，>0：正常天数)
            vo.setHadCapedReleaseDay(dto.getHadCapedReleaseDay());//有放款后自动释放限制(自上一次放款，多少天内没有放款，自动释放到公海 -1：无限制，0：无效，>0：正常天数）
            vo.setRemark(dto.getRemark());//备注
            vo.setIsValid(dto.getIsValid());//是否有效（0：否，1：是）
            vo.setIsDel(dto.getIsDel());//是否删除（0：否，1：是）
            vo.setCustomersLimitUp(dto.getCustomersLimitUp());//私海客户数限制，即每个客户经理私海中经销商数量（-1：无限制，0：无效，>0：限制领取）
            vo.setVisitRecDelayDate(dto.getVisitRecDelayDate());//拜访延长私海时长（-1：无效，0：当天，不延时，>0：正常延时天数）
            vo.setReceiveDefaultDay(dto.getReceiveDefaultDay());//默认领取天数(-1:永久，0：当日，>1：正常时效)
            vo.setIsCanReceive(dto.getIsCanReceive());//是否支持领取（0：否，1：是）
            vo.setUncrtprjReleaseDay(dto.getUncrtprjReleaseDay());//未立项自动释放限制(自认领私海起，多少天内没有立项，自动释放到公海，-1：无限制，0：无效，>0：正常天数）
            vo.setAutoRuleQCAndIsOr(dto.getAutoRuleQCAndIsOr());//自动释放规则关系是且还是或， 0：or，1：and


            vo.setCrtTm(dto.getCrtTm());//创建时间
            vo.setCrtUsrId(dto.getCrtUsrId());//创建人
            vo.setMdfTm(dto.getMdfTm());//修改时间
            vo.setMdfUsrId(dto.getMdfUsrId());//修改人
        }
        return vo;
    }

    /**
     * VO 转 DTO
     *
     * @param vo SplPriSeaRuleCfgVO
     * @return SplPriSeaRuleCfgDTO
     */
    public static SplPriSeaRuleCfgDTO toDTO(SplPriSeaRuleCfgVO vo) {
        SplPriSeaRuleCfgDTO dto = null;
        if (vo != null) {
            dto = new SplPriSeaRuleCfgDTO();
            dto.setId(vo.getId());
            dto.setTabNm(vo.getTabNm());//业务数据表名
            dto.setBuOrgCd(vo.getBuOrgCd());//事业部CODE
            dto.setOrgCd(vo.getOrgCd());//组织架构CODE
            dto.setPrivateSeaNm(vo.getPrivateSeaNm());//私海名称
            dto.setReceiveLimitUp(vo.getReceiveLimitUp());//私海领取上限（即，客户经理最多私海客户数，-1，0：无限制，>0：个数）
            dto.setIsLimitUp(vo.getIsLimitUp());//是否限制领取上限(0：否，1：是)
            dto.setIsAutoRelease(vo.getIsAutoRelease());//是否自动释放（0：否，1：是）
            dto.setIsActiveRelease(vo.getIsActiveRelease());//是否主动释放（0：否，1：是）
            dto.setReleasedReceiveDay(vo.getReleasedReceiveDay());//客户经理主动释放公海后对该经销商领取限制（-1：无限制，0：当日；N：几天后可领取）
            dto.setCapDelayDate(vo.getCapDelayDate());//放款延长私海时长（-1：无效，0：当天，不延时，>0：正常延时天数）
            dto.setCrtPrjDelayDate(vo.getCrtPrjDelayDate());//立项延长私海时长（-1：无效，0：当天，不延时，>0：正常延时天数）
            dto.setUnvisitReleaseDay(vo.getUnvisitReleaseDay());//未拜访自动释放限制(自认领私海起，多少天内没有拜访记录，自动释放到公海，-1：无限制，0：无效，>0：正常天数）
            dto.setUncapReleaseDay(vo.getUncapReleaseDay());//未放款自动释放限制(自认领私海起，多少天内没有放款，自动释放到公海，-1：无限制，0：无效，>0：正常天数)
            dto.setHadCapedReleaseDay(vo.getHadCapedReleaseDay());//有放款后自动释放限制(自上一次放款，多少天内没有放款，自动释放到公海 -1：无限制，0：无效，>0：正常天数）
            dto.setRemark(vo.getRemark());//备注
            dto.setIsValid(vo.getIsValid());//是否有效（0：否，1：是）
            dto.setIsDel(vo.getIsDel());//是否删除（0：否，1：是）
            dto.setCustomersLimitUp(vo.getCustomersLimitUp());//私海客户数限制，即每个客户经理私海中经销商数量（-1：无限制，0：无效，>0：限制领取）
            dto.setVisitRecDelayDate(vo.getVisitRecDelayDate());//拜访延长私海时长（-1：无效，0：当天，不延时，>0：正常延时天数）
            dto.setReceiveDefaultDay(vo.getReceiveDefaultDay());//默认领取天数(-1:永久，0：当日，>1：正常时效)
            dto.setIsCanReceive(vo.getIsCanReceive());//是否支持领取（0：否，1：是）
            dto.setUncrtprjReleaseDay(vo.getUncrtprjReleaseDay());//未立项自动释放限制(自认领私海起，多少天内没有立项，自动释放到公海，-1：无限制，0：无效，>0：正常天数）
            dto.setAutoRuleQCAndIsOr(vo.getAutoRuleQCAndIsOr());//自动释放规则关系是且还是或， 0：or，1：and


            dto.setCrtTm(vo.getCrtTm());//创建时间
            dto.setCrtUsrId(vo.getCrtUsrId());//创建人
            dto.setMdfTm(vo.getMdfTm());//修改时间
            dto.setMdfUsrId(vo.getMdfUsrId());//修改人
        }
        return dto;
    }

    /**
     * DTO集合 转 VO集合
     *
     * @param list List<SplPriSeaRuleCfgDTO>
     * @return List<SplPriSeaRuleCfgVO>
     */
    public static List<SplPriSeaRuleCfgVO> toVOList(List<SplPriSeaRuleCfgDTO> list) {
        List<SplPriSeaRuleCfgVO> voList = new ArrayList<SplPriSeaRuleCfgVO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (SplPriSeaRuleCfgDTO dto : list) {
                voList.add(toVO(dto));
            }
        }
        return voList;
    }

    /**
     * VO集合 转 DTO集合
     *
     * @param list List<SplPriSeaRuleCfgVO>
     * @return List<SplPriSeaRuleCfgDTO>
     */
    public static List<SplPriSeaRuleCfgDTO> toDTOList(List<SplPriSeaRuleCfgVO> list) {
        List<SplPriSeaRuleCfgDTO> dtoList = new ArrayList<SplPriSeaRuleCfgDTO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (SplPriSeaRuleCfgVO vo : list) {
                dtoList.add(toDTO(vo));
            }
        }
        return dtoList;
    }
}
